home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Original Shareware 1.1
/
The Original Shareware (WeMake CDs)(Volume 1.1)(CDs, Inc)(1993).iso
/
16
/
scrn2dsk.zip
/
SCRN2DSK.ASM
< prev
next >
Wrap
Assembly Source File
|
1980-01-01
|
4KB
|
200 lines
; SCREEN-SAVE
; (C) COPYRIGHT 1986 ANDREW FRIED
; COMPUTER SHOPPER JUNE86 P108
; NAME CHANGED TO SCRN2DSK TO AVOID CONFUSION W/ SCREEN BLANK UTILITIES
CSEG SEGMENT PARA 'CODE'
HANDLER PROC FAR
ASSUME CS:CSEG
ORG 100H
START:
JMP BOOTSTRAP
; notice was abbreviated to save memory (this is a resident program)
COPYRIGHT DB 9,' **** SCREEN-SAVE **** ',13,10,10
DB 9,'See Computer Shopper 6/86 ',13,10,10
DB 9,'* Prt Sc saves to disk * ','$'
BUSY DB 0
SCR_NUM DW 0
VIDEO_SEG DW ?
SCR_BUF DB 2025 DUP (?) ; USE 2050 IF YOU ADD LF
FILENAME DB 'SCREEN.'
FILE_EXT DB '000',0
INT_HANDLER:
SAVE_REGS:
STI
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DS
PUSH ES
PUSH SI
PUSH DI
PUSH CS
POP DS
CMP BUSY,0
JE SET_FLAG
JMP EXIT
SET_FLAG:
MOV BUSY,1
GET_SCRN_SEG:
INT 11H
AND AX,48
CMP AL,48
JE J1
MOV VIDEO_SEG, 0B800H
JMP FILL_BUF
J1:
MOV VIDEO_SEG,0B000H
FILL_BUF:
XOR DX,DX
MOV BX,VIDEO_SEG
MOV DS,BX
MOV BX,CS
MOV ES,BX
XOR BX,BX
MOV SI,BX
LEA DI,SCR_BUF
MOV CX,2000 ; 80 x 25 = 2000
NEXT:
MOV AX,[SI]
MOV ES:[DI],AL
INC SI
INC SI
INC DI
INC DX
CMP DX,80
JNE CONTINUE
MOV BYTE PTR ES:[DI],13
INC DI
; my editor doesn't require line-feed, you may want it
; MOV BYTE PTR ES:[DI],10
; INC DI
XOR DX,DX
CONTINUE:
LOOP NEXT
SAVE_SCR:
CLI
MOV AH,3CH
XOR CX,CX
MOV BX,CS
MOV DS,BX
LEA DX,FILENAME
INT 21H
JC EXIT
MOV BX,AX
MOV AH,40H
MOV CX,2025 ; SOURCE USES 2050 WHILE TEXT SAYS 2048
MOV DX,CS ; IF YOU ADD CR & LF THE LAST PAIR WILL
MOV DS,DX ; BE LOST. I'M USING 2025 BECAUSE I DON'T
LEA DX,SCR_BUF ; USE THE LF.
INT 21H ; 2048 OR LESS IS DESIRABLE TO AVOID ALLOCATING
MOV AH,3EH ; ANOTHER CLUSTER FOR THE 2 BYTES
INT 21H
STI
INC_SCR_NUM:
MOV AX,SCR_NUM
INC AX
CMP AX,1000
JNE J2
XOR AX,AX
J2:
MOV SCR_NUM,AX
UPDATE_NAME:
CMP AX,0
JE RESET_FLAG
LEA DI,FILE_EXT
MOV CL,100
IDIV CL
ADD AL,'0'
MOV [DI],AL
INC DI
XCHG AH,AL
XOR AH,AH
MOV CL,10
IDIV CL
ADD AL,'0'
MOV [DI],AL
INC DI
ADD AH,'0'
MOV [DI],AH
RESET_FLAG:
MOV BUSY,0
EXIT:
POP DI
POP SI
POP ES
POP DS
POP DX
POP CX
POP BX
POP AX
IRET
BOOTSTRAP:
MOV AH,11
MOV BX,0001H
INT 10H
MOV AX,600H
XOR CX,CX
MOV DH,24
MOV DL,79
MOV BH,31
INT 10H
MOV AH,2
SUB BH,BH
SUB DX,DX
INT 10H
MOV AX,CS
MOV DS,AX
LEA DX,COPYRIGHT
MOV AH,9
INT 21H
XOR AX,AX
MOV BUSY,AL
MOV SCR_NUM,AX
MOV AH,25H
MOV AL,5
MOV BX,CS
MOV DS,BX
LEA DX,INT_HANDLER
INT 21H
LEA DX,BOOTSTRAP
ADD DX,5
INT 27H
HANDLER ENDP
CSEG ENDS
END START